ABAP选择屏幕:动态选择屏幕 您所在的位置:网站首页 sap d ABAP选择屏幕:动态选择屏幕

ABAP选择屏幕:动态选择屏幕

2023-10-07 11:13| 来源: 网络整理| 查看: 265

导语:在做ALV报表的时候,碰见过用 RADIOBUTTON区分不同页签,或者是区分不同的选择屏幕字段的需求,这里简单的说一下,如何通过RADIOBUTTON来实现动态选择屏幕。

关键元素: 1、 MODIF ID 在需要实现动态的屏幕定义后面定义一下 MODIF ID

TABLES :marc,mara. SELECT-OPTIONS:s_werks FOR marc-werks, s_matnr FOR mara-matnr, s_bismt FOR mara-bismt, s_mmsta FOR marc-mmsta MODIF ID id1, s_ekgrp FOR marc-ekgrp MODIF ID id1, s_cons FOR marc-cons_procg.

2、 USER-COMMAND 在需要触发动态屏幕的RADIOBUTTON后面定义USER-COMMAND组,来实现指令

PARAMETERS: p_tab1 RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND rbxx, p_tab2 RADIOBUTTON GROUP gp1.

3、 AT SELECTION-SCREEN OUTPUT 在 AT SELECTION-SCREEN OUTPUT下面写具体的需要控制的条件,以下示例是说,当p_tab1 = 'X’的时候,屏幕上展示商品状态(S_MMSTA)和采购组(S_EKGRP)

LOOP AT SCREEN . IF screen-group1 = 'ID1'. IF p_tab1 = abap_false. screen-active = '0'. ELSE. screen-active = '1'. ENDIF. ENDIF. MODIFY SCREEN. ENDLOOP.

4、整段代码展示

TABLES :marc,mara. SELECTION-SCREEN BEGIN OF BLOCK blc_001 WITH FRAME TITLE TEXT-001. SELECT-OPTIONS:s_werks FOR marc-werks, s_matnr FOR mara-matnr, s_bismt FOR mara-bismt, s_mmsta FOR marc-mmsta MODIF ID id1, s_ekgrp FOR marc-ekgrp MODIF ID id1, s_cons FOR marc-cons_procg. PARAMETERS: p_tab1 RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND rbxx, p_tab2 RADIOBUTTON GROUP gp1. SELECTION-SCREEN END OF BLOCK blc_001. AT SELECTION-SCREEN OUTPUT. PERFORM frm_scr_out. FORM frm_scr_out . LOOP AT SCREEN . IF screen-group1 = 'ID1'. IF p_tab1 = abap_false. screen-active = '0'. ELSE. screen-active = '1'. ENDIF. ENDIF. MODIFY SCREEN. ENDLOOP. ENDFORM.

5、注意 动态选择屏幕一般情况下与 OBLIGATORY冲突,所以屏幕必输检查就不能用 OBLIGATORY关键字来控制了,这里我的必输校验放在了 START-OF-SELECTION下面

IF s_werks IS INITIAL. MESSAGE '请输入【工厂】!' TYPE 'S' DISPLAY LIKE 'E'. RETURN. ENDIF. IF s_matnr IS INITIAL AND s_bismt AND s_brand IS INITIAL. MESSAGE '【商品编码】和【供应商商品货号】和【品牌】请至少输入一项!' TYPE 'S' DISPLAY LIKE 'E'. RETURN. ENDIF.

6、结果展示

在这里插入图片描述 作者:小飞猪猪猪猪猪猪猪–CSDN 注意:转发请注明作者



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有